home *** CD-ROM | disk | FTP | other *** search
-
- /*
- 自分の行動ターンのサブルーチン
-
- By 五味
- */
-
- #include <stdio.h>
- #include <sub.h>
-
- extern int acom,turn,gold,f,i,j,o,k[],ko[],hp[],x[],y[];
- extern int mx[],my[],ht[],th[],dhp[],tx[],ty[],bx[],by[];
- extern char c,*nn[];
-
- void map_drow(void);
-
-
- my_turn()
- {
-
- acom = 0; /* コマンド終了フラグ */
-
- while( acom == 0 )
- {
- f=0;
- for( i=0 ; i<100 ; i++ )
- {
- if( k[i]!=-1 )
- f++;
- }
-
- printf("--------------------------\n");
- printf(" 第%dターン 城の全財産 %5d 部隊数 %2d\n\n",turn,gold,f);
- printf(" 1.味方情報 2.敵情報\n");
- printf(" 3.傭兵を雇う 0.ターンを終える\n");
- printf(" 4.マップを見る\n\n");
-
- c = getch();
- switch( c )
- {
- case'1':
- f=0;
- for( i=0 ; i<100 ; i++ )
- {
- if( k[i]!=-1 )
- {
- printf(" 第%2d部隊 %-16s HP %2d 現在位置(%3d, %3d) 目的地(%3d,%3d)\n",i+1,nn[k[i]],hp[i],x[i],y[i],mx[i],my[i]);
- if( (i+1)/10*10 == i+1 )
- {
- getch();
- printf("\n");
- }
- f++;
- }
- }
- if( f==0 )
- {
- printf(" 部隊が存在しませんので、雇ってください。\n それとも、討伐を諦めますか?(y/n)\n\n");
- c = getch();
- if( c=='Y' || c=='y' )
- {
- printf(" 第%dターン。ついにあなたは、ファブル軍団掃討を諦めた…。\n",turn);
- getch();
- return(1);
- }
- }
- printf("\n");
- break;
-
- case'2':
- f=0;
- for( i=0 ; i<5 ; i++ )
- {
- if( ht[i]!=0 )
- {
- printf("\t砦の位置(%3d,%3d) 城主:%-16s",tx[i],ty[i],nn[i+20]);
- if( th[i]!=0 )
- printf(" 陥落\n");
- else
- printf("\n");
- f++;
- }
- }
-
- printf("\n");
- if( f==0 )
- printf(" 敵の砦は、まだ見つかっていません。早く見つけましょう。\n\n");
- break;
-
- case'3':
- come:
- f=100;
- for( i=99 ; i>=0 ; i-- )
- {
- if( k[i] == -1 )
- f=i;
- }
- if( f == 100 )
- {
- printf(" すでに100部隊います。もう雇えません。\n\n");
- getch();
- break;
- }
-
- printf("-----------------------------------\n");
- printf(" 1.ゴブリン 5 11.魔法使い 100\n");
- printf(" 2.オーク 10 12.盗賊 200\n");
- printf(" 3.オーガー 20 13.聖騎士 700\n");
- printf(" 4.トロール 50 14.傭兵 300\n");
- printf(" 5.ジャイアント 100 15.勇者 1000\n");
- printf(" 6.ミノタウロス 80 16.美人女戦士 300\n");
- printf(" 7.サラマンダー 300 17.ブス女戦士 300\n");
- printf(" 8.ドラゴン 1000 18.従者 10\n");
- printf(" 9.蛮族の戦士 30 19.ドワーフ戦士 100\n");
- printf(" 10.騎士 50 20.精霊使い 120\n");
- printf("-----------------------------------\n\n");
-
- printf(" どれを雇いますか?(キャンセルは0) ");
-
- i = getnum();
- printf("\n\n");
- if( i<1 || i>20)
- break;
- i--;
- if( gold < ko[i] )
- {
- printf(" お金がないので、%sは雇えません。\n\n",nn[i]);
- break;
- }
-
- k[f] = i;
- x[f] = 100;
- y[f] = 20;
- hp[f] = dhp[i];
-
- printf(" 第%d部隊に%sを設定しました。\n",f+1,nn[i]);
-
- do {
- printf(" %sを、どこへ向かわせますか?\n",nn[i]);
- printf(" 城の位置は(100, 20)です。\n\n");
-
- do {
- printf("\tX座標(0~200)=");
- j = getnum();
- printf("\n");
- }while( j<0 || j>200 );
- mx[f] = j;
-
- do {
- printf("\tY座標(0~200)=");
- j = getnum();
- printf("\n");
- }while( j<0 || j>200 );
- my[f] = j;
-
- printf("\n 出発させますが、よろしいですか?(変更は1、キャンセルは0)\n\n");
-
- }while( ( c=getch() ) =='1' );
-
- if( c=='0' )
- {
- j=ko[i]/10;
- printf(" キャンセル料、%dを払いました。\n\n",j);
- gold -= j;
- k[i]=-1;
- break;
- }
-
- gold -= ko[i]; /* 代入演算子だ~! */
- goto come;
-
- case'4':
- map_drow();
- break;
-
- case'T':
- case't':
- printf("\t宝のある場所の一覧なのだ\n\n");
- for( i=0 ; i<30 ; i=i+3 )
- printf(" (%3d,%3d)(%3d,%3d)(%3d,%3d)\n",bx[i],by[i],bx[i+1],by[i+1],bx[i+2],by[i+2]);
- printf("\n\tみんなには内緒だよ\n\n");
- break;
-
- case'B':
- case'b':
- for( i=0 ; i<5 ; i++ )
- {
- printf("\t砦の位置(%3d,%3d) 城主:%-16s",tx[i],ty[i],nn[i+20]);
- if( th[i]!=0 )
- printf(" 陥落\n");
- else
- if( ht[i]!=0 )
- printf("\n");
- else
- printf(" 未発見\n");
- }
- printf("\n");
- break;
-
- default:
- acom = 1; /* コマンド終了 */
- break;
- }
-
- }
-
- return(0);
- }
-